// pages/home/index.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    logs: [],
    txt: '',
    scrollTop: 0,
    toView: '',
    animation: true,
    disabled: false,
    wx: 'fantasyo1559'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },



  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    app.appLoginOk(()=> {
      this.initFun()
    }, true)
  },
  // 初始化方法
  initFun() {
    this.getGptLog()
  },
  getUserInfo() {
    const token = wx.getStorageSync('token')
    wx.showToast({
      icon: 'none',
      title: token,
    })
  },
  setCopy(e) {
    app.copy(e.currentTarget.dataset.text)
  },
  // 获取聊天记录
  getGptLog() {
    app._post_form('/api/get-gpt-log', {}, (res)=>{
      if(res.code === 200){
        this.setData({
          logs: res.data,
        })
      }
    })

  },
  // 交互
  inputTxt(e) {
    this.setData({
      txt: e.detail.value
    })
  },
  // 动态打字效果
  dongTxt(str, fun) {
    let i = 0,timer = 0
    function typing () {
      if (i <= str.length) {
        fun(str.slice(0, i++) + '_', 2)
        timer = setTimeout(typing, 200)
      } else {
        fun(str, 1)
        clearTimeout(timer)
      }
    }
    typing()
  },
  // 提问  // scrollTop: (this.data.logs.length + 1) * 180
  setGpt() {
    const desc = this.data.txt
   
    if(this.data.disabled) {
      wx.showToast({
        icon: 'none',
        title: '耐心等待结果...',
      })
      return false
    }
    if(!desc) {
      wx.showToast({
        icon: 'none',
        title: '请输入内容！',
      })
      return false
    }
    this.setData({
      disabled: true,
      // animation: true
    })

    app._post_form('/api/get-chat-gpt', {desc: desc}, (res)=>{
      if(res.code === 200){
        // this.setData({
        //   animation: true
        // })
        let answer = res.data.answer
        let to_view = `to-${res.data.id}`
        res.data.answer = ''
        setTimeout(()=>{
          this.setData({
            txt: '',
            logs: [...this.data.logs, res.data],
            toView: to_view
          })
          // this.setData({
          //   animation: false
          // })
          setTimeout(()=>{
            let ii = this.data.logs.length - 1
            let key = "logs["+ii+"].answer"
            this.dongTxt(answer, (str, code)=>{
              this.setData({
                [key]: str,
                toView: to_view
              })
              if(code == 1) {
                this.setData({
                  disabled: false
                })
              }
            })
          }, 50)



        }, 50)





      }
    }, (res) => {
      this.setData({
        disabled: false
      })
    })

  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})